/**
 * 数据监控系统初始化
 */

const dataMonitor = require('../monitoring/data_monitor');
const cloudBase = require('../../../framework/cloud/cloud_base.js');

/**
 * 初始化监控系统
 * 1. 创建必要的集合
 * 2. 设置索引
 * 3. 启动定期一致性检查
 */
async function initMonitorSystem() {
  console.log('[监控系统] 开始初始化数据监控系统');
  
  try {
    // 获取数据库引用
    const cloud = cloudBase.getCloud();
    const db = cloud.database();
    
    // 检查并创建监控相关集合
    const collectionsToCreate = [
      'plm_data_operations_log',
      'plm_system_alerts'
    ];
    
    // 批量创建集合，错误不中断流程
    for (const collection of collectionsToCreate) {
      try {
        console.log(`[监控系统] 创建集合: ${collection}`);
        await db.createCollection(collection);
        console.log(`[监控系统] 集合 ${collection} 创建成功`);
      } catch (err) {
        if (err.message && err.message.includes('already exists')) {
          console.log(`[监控系统] 集合 ${collection} 已存在，跳过创建`);
        } else {
          console.warn(`[监控系统] 创建集合 ${collection} 失败: ${err.message}`);
          // 继续执行，不要中断流程
        }
      }
    }
    
    // 记录初始化成功
    console.log('[监控系统] 数据监控系统集合初始化完成');
    
    // 启动定期一致性检查（即使出错也不中断启动流程）
    try {
      dataMonitor.startConsistencyCheck();
    } catch (checkError) {
      console.warn('[监控系统] 启动一致性检查失败:', checkError.message);
    }
    
    // 写入初始化记录（如果失败也继续运行）
    try {
      await dataMonitor.logOperation(
        'system_init',
        'system',
        '',
        {
          success: true,
          message: '监控系统初始化成功'
        }
      );
    } catch (logError) {
      console.warn('[监控系统] 记录初始化日志失败:', logError.message);
    }
    
    console.log('[监控系统] 数据监控系统初始化完成');
    return true;
  } catch (error) {
    console.error('[监控系统] 初始化监控系统失败:', error);
    // 返回true，不要因为监控系统问题阻止应用启动
    return true;
  }
}

module.exports = {
  initMonitorSystem
}; 